home *** CD-ROM | disk | FTP | other *** search
- /*
- * $XConsortium: Xlcint.h,v 11.14 92/04/14 15:42:59 rws Exp $
- */
-
- /*
- * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- * and Nippon Telegraph and Telephone Corporation
- * Copyright 1991 by the Massachusetts Institute of Technology
- * Copyright 1991 by the Open Software Foundation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of OMRON, NTT Software, NTT, Open
- * Software Foundation and M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. OMRON, NTT Software, NTT, Open Software
- * Foundation and M.I.T. make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION AND M.I.T.
- * DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATIONN OR M.I.T. BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Li Yuhong OMRON Corporation
- * Tatsuya Kato NTT Software Corporation
- * Hiroshi Kuribayashi OMRON Coproration
- * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
- *
- * M. Collins OSF
- */
-
-
- #ifndef _XLCINT_H_
- #define _XLCINT_H_
-
- #include <X11/Xresource.h>
-
- /* current Ultrix compiler gets horribly confused */
- #if defined(FUNCPROTO) && defined(ultrix)
- #undef NeedFunctionPrototypes
- #endif
-
- typedef struct _XIMFilter {
- struct _XIMFilter *next;
- Window window;
- unsigned long event_mask;
- int start_type, end_type;
- Bool (*filter)(
- #if NeedFunctionPrototypes
- Display*, Window, XEvent*, XPointer
- #endif
- );
- XPointer client_data;
- } XFilterEventRec, *XFilterEventList;
-
- #ifdef offsetof
- #define XOffsetOf(s_type,field) offsetof(s_type,field)
- #else
- #define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
- #endif
-
- #define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
-
- typedef struct {
- char *name;
- XPointer value;
- } XIMArg;
-
- #define ICInputStyle 0
- #define ICClientWindow 1
- #define ICFocusWindow 2
- #define ICFilterEvents 3
- #define ICArea 4
- #define ICAreaNeeded 5
- #define ICSpotLocation 6
- #define ICColormap 7
- #define ICStdColormap 8
- #define ICForeground 9
- #define ICBackground 10
- #define ICBackgroundPixmap 11
- #define ICFontSet 12
- #define ICLineSpace 13
- #define ICCursor 14
- #define ICResourceClass 26
- #define ICResourceName 27
-
- #define IMQueryInputStyle 0
-
- #define IMResourceWrite 1
- #define IMResourceRead 2
- #define IMResourceReadWrite 3
-
- /*
- * define secondary data structs which are part of Input methods
- * and input context
- */
- typedef struct {
- XrmQuark xrm_name; /* Resource name quark */
- int xrm_size; /* Size in bytes of data */
- long xrm_offset; /* -offset-1 */
- unsigned short mode; /* Read Write Permission */
- int mask; /* ? */
- } XIMrmResource, *XIMrmResourceList;
-
- typedef struct {
- char *resource_name; /* Resource string */
- int resource_size; /* Size in bytes of data */
- long resource_offset; /* -offset-1 */
- unsigned short mode; /* Read Write Permission */
- int mask; /* ? */
- } XIMResource, *XIMResourceList;
-
- typedef struct {
- XIMCallback start;
- XIMCallback done;
- XIMCallback draw;
- XIMCallback caret;
- } ICCallbacks;
-
- /*
- * data block describing the visual attributes associated with
- * an input context
- */
- typedef struct {
- XRectangle area;
- XRectangle area_needed;
- XPoint spot_location;
- Colormap colormap;
- Atom std_colormap;
- unsigned long foreground;
- unsigned long background;
- Pixmap background_pixmap;
- XFontSet fontset;
- int line_space;
- Cursor cursor;
- ICCallbacks callbacks;
- } ICAttributes, *ICAttributesPtr;
-
- typedef struct _XLCd *XLCd; /* need forward reference */
-
- /*
- * define an LC, it's methods, and data.
- */
-
- typedef struct {
- char* (*map_modifiers)( /* called by XSetModifiers */
- #if NeedFunctionPrototypes
- XLCd, char*, char*
- #endif
- );
- XFontSet (*create_fontset)(
- #if NeedFunctionPrototypes
- XLCd, Display*, char*, char**, int, char***, int*
- #endif
- );
- XIM (*open_im)(
- #if NeedFunctionPrototypes
- XLCd, Display*, XrmDatabase, char*, char*
- #endif
- );
- } XLCdMethodsRec, *XLCdMethods;
-
-
- typedef struct {
- char* name; /* name of this LC */
- char* modifiers; /* modifiers of locale */
- } XLCdCoreRec, *XLCdCore;
-
-
- typedef struct _XLCd {
- XLCdMethods methods; /* methods of this LC */
- XLCdCoreRec core; /* data of this LC */
- } XLCdRec;
-
-
- /*
- * X Font Sets are an instantiable object, so we define it, the
- * object itself, a method list and data
- */
-
- /*
- * XFontSet object method list
- */
- typedef struct {
- /* pure font methods */
-
- void (*free)(
- #if NeedFunctionPrototypes
- Display*, XFontSet
- #endif
- );
-
- /* multi-byte text drawing methods */
-
- int (*mb_escapement)(
- #if NeedFunctionPrototypes
- XFontSet, char*, int
- #endif
- );
- int (*mb_extents)(
- #if NeedFunctionPrototypes
- XFontSet, char*, int, XRectangle*, XRectangle*
- #endif
- );
- Status (*mb_extents_per_char)(
- #if NeedFunctionPrototypes
- XFontSet, char*, int, XRectangle*, XRectangle*, int, int*,
- XRectangle*, XRectangle*
- #endif
- );
- int (*mb_draw_string)(
- #if NeedFunctionPrototypes
- Display*, Drawable, XFontSet, GC, int, int, char*, int
- #endif
- );
- void (*mb_draw_image_string)(
- #if NeedFunctionPrototypes
- Display*, Drawable, XFontSet, GC, int, int, char*, int
- #endif
- );
-
- /* wide character text drawing methods */
-
- int (*wc_escapement)(
- #if NeedFunctionPrototypes
- XFontSet, wchar_t*, int
- #endif
- );
- int (*wc_extents)(
- #if NeedFunctionPrototypes
- XFontSet, wchar_t*, int, XRectangle*, XRectangle*
- #endif
- );
- Status (*wc_extents_per_char)(
- #if NeedFunctionPrototypes
- XFontSet, wchar_t*, int, XRectangle*, XRectangle*, int, int*,
- XRectangle*, XRectangle*
- #endif
- );
- int (*wc_draw_string)(
- #if NeedFunctionPrototypes
- Display*, Drawable, XFontSet, GC, int, int, wchar_t*, int
- #endif
- );
- void (*wc_draw_image_string)(
- #if NeedFunctionPrototypes
- Display*, Drawable, XFontSet, GC, int, int, wchar_t*, int
- #endif
- );
- } XFontSetMethodsRec, *XFontSetMethods;
-
-
- /*
- * XFontSet LC independent data
- */
-
- typedef struct {
- XLCd lcd; /* LC of this font set */
- char * base_name_list; /* base font name list */
- int num_of_fonts; /* number of fonts */
- char ** font_name_list; /* font names list */
- XFontStruct ** font_struct_list; /* font struct list */
- XFontSetExtents font_set_extents; /* font set extents */
- char * default_string; /* default string */
- Bool context_dependent; /* context-dependent drawing */
- } XFontSetCoreRec, *XFontSetCore;
-
-
- /*
- * An XFontSet. Implementations may need to extend this data structure to
- * accomodate additional data, state information etc.
- */
- typedef struct _XFontSet {
- XFontSetMethods methods; /* methods of this font set */
- XFontSetCoreRec core; /* data of this font set */
- } XFontSetRec;
-
-
-
- /*
- * X Input Managers are an instantiable object, so we define it, the
- * object itself, a method list and data.
- */
-
- /*
- * an Input Manager object method list
- */
- typedef struct {
- Status (*close)(
- #if NeedFunctionPrototypes
- XIM
- #endif
- );
- char* (*get_values)(
- #if NeedFunctionPrototypes
- XIM, XIMArg*
- #endif
- );
- XIC (*create_ic)(
- #if NeedFunctionPrototypes
- XIM, XIMArg*
- #endif
- );
- } XIMMethodsRec, *XIMMethods;
-
- /*
- * Input Manager LC independent data
- */
- typedef struct {
- XLCd lcd; /* LC of this input method */
- XIC ic_chain; /* list of ICs for this IM */
-
- Display * display; /* display */
- XrmDatabase rdb;
- char * res_name;
- char * res_class;
-
- XIMrmResourceList ic_resources; /* compiled IC resource list */
- unsigned int ic_num_resources;
- XIMrmResourceList ic_attr_resources; /* compiled IC visual res */
- unsigned int ic_num_attr_resources;
- } XIMCoreRec, *XIMCore;
-
-
-
- /*
- * An X Input Manager (IM). Implementations may need to extend this data
- * structure to accomodate additional data, state information etc.
- */
- typedef struct _XIM {
- XIMMethods methods; /* method list of this IM */
- XIMCoreRec core; /* data of this IM */
- } XIMRec;
-
-
-
- /*
- * X Input Contexts (IC) are an instantiable object, so we define it, the
- * object itself, a method list and data for this object
- */
-
- /*
- * Input Context method list
- */
- typedef struct {
- void (*destroy)(
- #if NeedFunctionPrototypes
- XIC
- #endif
- );
- void (*set_focus)(
- #if NeedFunctionPrototypes
- XIC
- #endif
- );
- void (*unset_focus)(
- #if NeedFunctionPrototypes
- XIC
- #endif
- );
- char* (*set_values)(
- #if NeedFunctionPrototypes
- XIC, XIMArg*
- #endif
- );
- char* (*get_values)(
- #if NeedFunctionPrototypes
- XIC, XIMArg*
- #endif
- );
- char* (*mb_reset)(
- #if NeedFunctionPrototypes
- XIC
- #endif
- );
- wchar_t* (*wc_reset)(
- #if NeedFunctionPrototypes
- XIC
- #endif
- );
- int (*mb_lookup_string)(
- #if NeedFunctionPrototypes
- XIC, XKeyEvent*, char*, int, KeySym*, Status*
- #endif
- );
- int (*wc_lookup_string)(
- #if NeedFunctionPrototypes
- XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
- #endif
- );
- } XICMethodsRec, *XICMethods;
-
-
-
- /*
- * Input Context LC independent data
- */
- typedef struct {
- XIM im; /* XIM this IC belongs too */
- XIC next; /* linked list of ICs for IM */
-
- Window client_window; /* window IM can use for */
- /* display or subwindows */
- XIMStyle input_style; /* IM's input style */
- Window focus_window; /* where key events go */
- XrmDatabase res_database; /* where IM gets resources */
- char * string_database; /* string for IM's resources */
- XIMCallback geometry_callback; /* client callback */
- int preedit_state; /* */
- unsigned long filter_events; /* event mask from IM */
-
- ICAttributes preedit_attr; /* visuals of preedit area */
- ICAttributes status_attr; /* visuals of status area */
- } XICCoreRec, *XICCore;
-
-
- /*
- * an Input Context. Implementations may need to extend this data
- * structure to accomodate additional data, state information etc.
- */
- typedef struct _XIC {
- XICMethods methods; /* method list of this IC */
- XICCoreRec core; /* data of this IC */
- } XICRec;
-
- /*
- * Methods for Xrm parsing
- */
-
- typedef struct {
- void (*mbinit)(
- #if NeedFunctionPrototypes
- XPointer /* state */
- #endif
- );
- char (*mbchar)(
- #if NeedFunctionPrototypes
- XPointer /* state */,
- char* /* str */,
- int* /* lenp */
- #endif
- );
- void (*mbfinish)(
- #if NeedFunctionPrototypes
- XPointer /* state */
- #endif
- );
- char* (*lcname)(
- #if NeedFunctionPrototypes
- XPointer /* state */
- #endif
- );
- void (*destroy)(
- #if NeedFunctionPrototypes
- XPointer /* state */
- #endif
- );
- } XrmMethodsRec, *XrmMethods;
-
- /* current Ultrix compiler gets horribly confused */
- #if !defined(NeedFunctionPrototypes) && defined(FUNCPROTO)
- #define NeedFunctionPrototypes 1
- #endif
-
- typedef XLCd (*XLCdLoadProc)(
- #if NeedFunctionPrototypes
- char*
- #endif
- );
-
- _XFUNCPROTOBEGIN
-
- extern XLCd _XlcCurrentLC(
- #if NeedFunctionPrototypes
- void
- #endif
- );
-
- extern Bool _XlcValidModSyntax(
- #if NeedFunctionPrototypes
- char* /* mods */,
- char** /* valid */
- #endif
- );
-
- extern char *_XlcDefaultMapModifiers(
- #if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* user_mods */,
- char* /* prog_mods */
- #endif
- );
-
- extern void _XIMCompileResourceList(
- #if NeedFunctionPrototypes
- XIMResourceList /* res */,
- unsigned int /* num_res */
- #endif
- );
-
- extern void _XCopyToArg(
- #if NeedFunctionPrototypes
- XPointer /* src */,
- XPointer* /* dst */,
- unsigned int /* size */
- #endif
- );
-
- extern char ** _XParseBaseFontNameList(
- #if NeedFunctionPrototypes
- char* /* str */,
- int* /* num */
- #endif
- );
-
- extern XrmMethods _XrmInitParseInfo(
- #if NeedFunctionPrototypes
- XPointer* /* statep */
- #endif
- );
-
- extern void _XRegisterFilterByMask(
- #if NeedFunctionPrototypes
- Display* /* dpy */,
- Window /* window */,
- unsigned long /* event_mask */,
- Bool (*)(
- #if NeedNestedPrototypes
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- #endif
- ) /* filter */,
- XPointer /* client_data */
- #endif
- );
-
- extern void _XRegisterFilterByType(
- #if NeedFunctionPrototypes
- Display* /* dpy */,
- Window /* window */,
- int /* start_type */,
- int /* end_type */,
- Bool (*)(
- #if NeedNestedPrototypes
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- #endif
- ) /* filter */,
- XPointer /* client_data */
- #endif
- );
-
- extern void _XUnregisterFilter(
- #if NeedFunctionPrototypes
- Display* /* dpy */,
- Window /* window */,
- Bool (*)(
- #if NeedNestedPrototypes
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- #endif
- ) /* filter */,
- XPointer /* client_data */
- #endif
- );
-
- _XFUNCPROTOEND
-
- #endif /* _XLCINT_H_ */
-